﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dominio.Entidades
{
    public partial class Funcionalidades
    {
        public override string ToString() 
        {
            return this._Descripcion;
        }

        /// <summary>
        /// Retorna las funcionalidades del sistema.
        /// </summary>
        /// <returns></returns>
        public static List<Funcionalidades> FuncionalidadesSistema() 
        {
            List<Funcionalidades> ListaFuncionalidades = new List<Funcionalidades>();
            ListaFuncionalidades = Contexto.GetContexto().Funcionalidades.ToList();

            return ListaFuncionalidades;
        }

        /// <summary>
        /// Dado el Rol pasado por parámetro, retorna una lista con las funcionalidades asociadas.
        /// </summary>
        /// <returns></returns>
        public static List<Funcionalidades> FuncionalidadesPorRol(Roles Rol) 
        {
            List<Funcionalidades> ListaFuncionalidadesRol = new List<Funcionalidades>();
            var aux = from o in Contexto.GetContexto().RolFuncionalidad where o.IdRol == Rol.IdRol select o.Funcionalidades;
            ListaFuncionalidadesRol = (List<Funcionalidades>)aux.ToList();

            return ListaFuncionalidadesRol;
        }

        /// <summary>
        /// Dado el Rol pasado por parámetro, retorna una lista con las funcionalidades no asociadas al rol.
        /// </summary>
        /// <param name="Rol"></param>
        /// <returns></returns>
        public static List<Funcionalidades> FuncionalidadesNoRol(Roles Rol) 
        {
            var aux = from o in FuncionalidadesSistema() where (!FuncionalidadesPorRol(Rol).Contains(o)) select o;
            List<Funcionalidades> ListaFuncionalidadesNoRol = (List<Funcionalidades>)aux.ToList();

            return ListaFuncionalidadesNoRol;
        }
    }
}
